/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: syyyy
 * Date: 2025-10-21
 * Time: 21:43
 */
import java.util.Arrays;

public class BigIntegerMultiplication {
    public static String multiply(String num1, String num2) {
        // 边界处理：有一个数为0，结果为0
        if (num1.equals("0") || num2.equals("0")) {
            return "0";
        }

        int len1 = num1.length();
        int len2 = num2.length();
        // 乘积的最大长度为 len1 + len2（例如99*99=9801，2+2=4位）
        int[] result = new int[len1 + len2];

        // 从右往左遍历乘数的每一位（模拟手工乘法）
        for (int i = len1 - 1; i >= 0; i--) {
            int digit1 = num1.charAt(i) - '0'; // 转换为数字
            for (int j = len2 - 1; j >= 0; j--) {
                int digit2 = num2.charAt(j) - '0';
                // 计算当前位的乘积
                int product = digit1 * digit2;
                // 确定当前乘积在结果数组中的位置（错位相加）
                int p1 = i + j;       // 进位位置
                int p2 = i + j + 1;   // 当前位位置
                // 累加当前乘积到结果数组（包含之前的进位）
                int sum = product + result[p2];
                result[p2] = sum % 10; // 当前位的值
                result[p1] += sum / 10; // 进位值
            }
        }

        // 将结果数组转换为字符串（跳过前导0）
        StringBuilder sb = new StringBuilder();
        for (int digit : result) {
            // 只有当字符串不为空时，才添加0（避免前导0）
            if (!(sb.length() == 0 && digit == 0)) {
                sb.append(digit);
            }
        }

        return sb.toString();
    }

    public static void main(String[] args) {
        // 测试用例
        String num1 = "123456789";
        String num2 = "987654321";
        System.out.println("乘积：" + multiply(num1, num2)); // 输出 121932631112635269
    }
}